linux系统移植篇(三) |
您所在的位置:网站首页 › arm linux内核移植 › linux系统移植篇(三) |
linux系列目录: linux基础篇(一)——GCC和Makefile编译过程 linux基础篇(二)——静态和动态链接 ARM裸机篇(一)——i.MX6ULL介绍 ARM裸机篇(二)——i.MX6ULL启动过程 ARM裸机篇(三)——i.MX6ULL第一个裸机程序 ARM裸机篇(四)——重定位和地址无关码 ARM裸机篇(五)——异常和中断 linux系统移植篇(一)—— linux系统组成 linux系统移植篇(二)—— Uboot使用介绍 linux系统移植篇(三)—— Linux 内核使用介绍 文章目录 一、Linux 介绍二、Linux 内核的编译与烧录1. 获取Linux kernel2.Linux 内核目录分析3. 编译内核4.下载到开发板 一、Linux 介绍Linux 由 Linux 基金会管理与发布, Linux 官网为 https://www.kernel.org,NXP 会从 https://www.kernel.org 下载某个版本的 Linux 内核,然后将其移植到自己的 CPU上,测试成功以后就会将其开放给 NXP 的 CPU 开发者。开发者下载 NXP 提供的 Linux 内核,然后将其移植到自己的产品上。 Linux 内核采用宏内核架构,即 Linux 大部分功能都会在内核中实现,如进程管理、内存管理、设备管理、文件管理以及网络管理等功能,Linux 在发展的过程中,引入了内核模块(Loadable Kernel Module, LKM)机制,内核模块全称为动态可加载内核模块,就是在内核运行时可以动态加载一组目标代码来实现某些特定的功能,在这过程中不需要重新编译内核就可以实现动态扩展。 有三个方法获取 Kernel 源码,一个是 Kernel 官方内核源码,一个是 NXP 官方的 kernel 源码,一个是经过开发板厂商修改适配好板子的 kernel 源码。NXP 的 kernel 是根据 kernel 官方某一版本进行芯片适配的。作为嵌入式开发者,一般只需要 使用芯片厂商适配好的 kernel 进行开发即可,NXP官方linux仓库地址为:https://github.com/Freescale/linux-fslc。 Kernel 官方内核源码: https://git.kernel.org/ NXP 内核源码: https://source.codeaurora.org/external/imx/linux-imx/ 野火内核源码: https://github.com/Embedfire/ebf_linux_kernel.git 本次实验使用野火提供的适配好板子的 kernel 源码,下载方式如下:
编译得到的 zImage 内核在 arch/arm/boot 目录下,设备树在 arch/arm/boot/dts 目录下,设备树分为emmc 版本 imx6ull-mmc-npi.dtb 以及 nand 版本 imx6ull-nand-npi.dtb 。 vmlinux、 Image, zImage、 uImage 的区别: ①、 vmlinux 是 ELF 格式的文件,vmlinux 是编译出来的最原始的内核文件,是未压缩的。 ②、 Image 是 Linux 内核镜像文件,但是 Image 仅包含可执行的二进制数据。 Image 就是使用 objcopy 取消掉 vmlinux 中的一些其他信息,比如符号表什么的,也是未压缩的。 ③、 zImage 是经过 gzip 压缩后的 Image。 ④、 uImage 是老版本 uboot 专用的镜像文件, uImag 是在 zImage 前面加了一个长度为 64字节的“头”,这个头信息描述了该镜像文件的类型、加载位置、生成时间、大小等信息。但是新的 uboot 已经支持了 zImage 启动!所以已经很少用到 uImage 了 4.下载到开发板将内核镜像和设备树文件拷贝到tftp根目录中,然后使用tftp加载,并启动: tftp 80800000 zImage tftp 83000000 imx6ull-mmc-npi.dtb bootz 80800000 - 83000000
下节开始构建根文件系统。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |